package org.springframework.beans.factory.config;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.ConfigurableListableBeanFactory;

/**
 * @Name BeanFactoryPostProcessor
 * @Description: Bean 容器后处理器接口
 * 描述信息：该接口是 Spring 容器的扩展（装饰器模式）机制，实现在 Bean 实例化之前修改 BeanDefinition 信息。
 * 该接口有两个重要的实现类：
 * - PropertyPlaceholderConfigurer：使用 properties 属性文件中的配置项替换 Xml 配置文件中的占位符。
 * - CustomEditorConfigurer：自定义编辑器，实现 Bean 属性的类型转换。
 * @Version v1.0.0
 * @Author: lichao
 * @Date: 2024-03-19 16:40:43
 **/
public interface BeanFactoryPostProcessor {

    /**
     * 在所有 BeanDefinition 信息加载完成之后，Bean 实例化之前，修改 BeanDefinition 信息
     *
     * @param beanFactory Bean 容器
     * @version v1.0.0
     * @author lichao
     * @date 2024-03-19 16:45:36
     */
    void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;

}
